package cn.tedu.oop;

/**
 * @Author 金帮嘉诚
 * @Date 2021-06-10 周四 14:22
 */
/*本类用于测试 成员变量和同名静态变量、同名静态方法不能多态*/
public class TestDemo2 {
    public static void main(String[] args) {
        //继承和重写
        Cat2 c=new Cat2();
        System.out.println(c.sum);
        c.eat();
        c.play();//

        //多态
        /*口诀1：父类引用指向子类对象
        * 口诀2：编译看左边，运行看右边
        * */
        Animal2 ac=new Cat2();
        /*2.多态中，成员变量的使用都是父类的*/

        System.out.println(ac.sum);//10
        //System.out.println("ac.co = " + ac.co);
        /*3.多态中方法的声明看的是父类的，实现使用的是子类的*/
        ac.eat();
        /*4.多态中，如果父子类有同名的静态方法，使用的是父类的，
        因为多态对象被看作是父类类型*/
        ac.play();//Animal2.play()

    }
}
class Animal2{
    //
    int sum=10;
    static int co =10;
    public void eat(){
        System.out.println("Animal2 吃啥都行");
    }
    public static void play(){
        System.out.println("Animal2玩啥都行");
    }
}
/*多态的前提是是继承加重写*/
class Cat2 extends Animal2{
    //
    static  int co=100;
    int sum=100;
    //6.重写
    @Override/*@Override是一个注解，加在方法上，表示这是一个重写的方法*/
    public void eat(){
        System.out.println("小猫爱吃小鱼干儿~~~");
    }
    //7.独有
//    public void play(){//cannot override static method 'play()'
    /*注意：静态资源属于类，不存在重写的现象
    * 只是两个类中恰好有两个同名的静态方法*/
//    @Override//Method does not override method from its superclass
        public static void play(){
        System.out.println("小猫爱玩");
    }
}
